package com.thoughtful.serialize;

import com.thougtful.extension.SPI;

/**
 * 序列化接口, 所有序列化类需要实现该接口
 *
 * @author yushun
 * @createTime 2022/10/17 - 17:14
 **/
@SPI
public interface Serializer {

    /**
     * 序列化
     * @param obj   待序列化对象
     * @return      结果字节数组
     */
    byte[] serializer(Object obj);

    /**
     * 反序列化
     * @param bytes 序列化后的字节数组
     * @param clazz 目标类
     * @return      反序列化后的对象
     */
    <T> T deserializer(byte[] bytes, Class<T> clazz);

}
